import { type baseRequest } from '@/page/types/base/baseRequest'

export interface dispatch {
  /**
   * 分组
   */
  dispatchGroup: string
  /**
   * code
   */
  code: string
  /**
   * 运行类名称
   */
  classNames: string
  /**
   * 任务名称
   */
  name: string

  /**
   * corn表达式
   */
  cron: string
  /**
   * 请求地址
   */
  url: string

  /**
   * 请求参数
   */
  param: string
  /**
   * 权重
   */
  weight: number
  /**
   * 是否开启
   */
  open: boolean | null
  /**
   * 登录用户名称
   */
  loginName: string
  /**
   * 执行次数
   */
  counts: number
  /**
   * 最后一次执行时间
   */
  lastTime: string
  /**
   * 备注
   */
  remark: string

  /**
   * 定时任务结束时间
   */
  stopTime: string
  /**
   * 请求头
   */
  header: string
}
export interface dispatchInfo extends dispatch {
  id: string
  /**
   * 系统名称;admin;job;wechat;
   */
  sysName: {
    name: string
    desc: string
  }
  /**
   * 任务状态
   */
  dispatchStatus: {
    name: string
    desc: string
  }
  /**
   * 请求类型
   */
  requestType: {
    name: string
    desc: string
  }
  /**
   * 定时任务类型
   */
  type: {
    name: string
    desc: string
  }
}
export interface dispatchEditInfo extends dispatch {
  id: string
  /**
   * 系统名称;admin;job;wechat;
   */
  sysName: string
  /**
   * 任务状态
   */
  dispatchStatus: string
  /**
   * 请求类型
   */
  requestType: string
  /**
   * 定时任务类型
   */
  type: string
}

export interface dispatchS extends baseRequest {
  /**
   * 分组
   */
  dispatchGroup: string | null
  /**
   * 任务名称
   */
  name: string | null
  /**
   * 系统名称;admin;dispatch;wechat;
   */
  sysName: string | null
  /**
   * 请求类型
   */
  requestType: string | null
  /**
   * 定时任务类型
   */
  type: string | null
}

export class dispatchClass {
  paramNum = 0
  hearderNum = 0
  title = '添加调度'
  dispatchS: dispatchS = {
    dispatchGroup: null,
    name: null,
    page: 0,
    requestType: null,
    size: 10,
    sysName: null,
    total: 0,
    type: null,
    startTime: null,
    endTime: null,
    status: null,
    createBy: null
  }

  tableData = [] as dispatchInfo[]
  dialogFormVisible = false
  dispatchEdit: dispatchEditInfo = {
    classNames: '',
    code: '',
    counts: 0,
    cron: '',
    dispatchGroup: '',
    dispatchStatus: '',
    header: JSON.stringify({ '': '' }, null, '  '),
    id: '',
    lastTime: '',
    name: '',
    open: false,
    param: JSON.stringify({ '': '' }, null, '  '),
    remark: '',
    requestType: '',
    stopTime: '',
    sysName: '',
    type: '',
    url: '',
    loginName: '',
    weight: 0
  }

  addRules = {
    name: [
      {
        required: true,
        message: '名称不能为空',
        trigger: 'blur'
      }
    ],
    dispatchGroup: [
      {
        required: true,
        message: '组名不能为空',
        trigger: 'blur'
      }
    ],
    url: [
      {
        required: true,
        message: '请求地址不能为空',
        trigger: 'blur'
      }
    ],
    requestType: [
      {
        required: true,
        message: '请求类型不能为空',
        trigger: 'change'
      }
    ],
    type: [
      {
        required: true,
        message: '定时任务类型不能为空',
        trigger: 'change'
      }
    ],
    cron: [
      {
        required: true,
        message: 'cron不能为空',
        trigger: 'change'
      }
    ]
  }
  JobType = [
    {
      value: 'HTTP_REQUEST',
      label: 'http请求'
    },
    {
      value: 'OPENFEGIN_REQUEST',
      label: 'openfegin请求'
    },
    {
      value: 'COMMON_REQUEST',
      label: 'COMMON定时任务'
    }
  ]
}
